package com.qf.controller;

import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;

/**
 *
 * /download/test1?name=835c2c4e-0821-49f8-9914-f1183c5b31f1.jpg
 * @author lixu
 */
@RestController
@RequestMapping("/download")
public class DownLoadController {

    /**
     * 下载
     */
    @GetMapping("/test1")
    public void test1(String name, HttpServletResponse response) throws Exception{
        System.out.println("下载的名称：" + name);

        //1:读取文件   从磁盘读取到内存中 输入流  绝对路径   IO只认绝对路径 不认识相对路径
        FileInputStream fileInputStream = new FileInputStream("D:\\upload\\" + name);
        //2:输出流  response.输出流   响应给浏览器进行下载
        ServletOutputStream outputStream = response.getOutputStream();
        //3：告诉浏览器 此输出流是附件的时候 浏览器就会当成附件给你处理（下载）
        //设置响应头  告知浏览器，要以附件的形式保存内容   filename=浏览器显示的下载文件名
        response.setHeader("content-disposition","attachment;filename="+name);
        //4：工具类： 作用： 将输入流转成输出流
        IOUtils.copy(fileInputStream, outputStream);

    }
}
